package com.lj.sys.result;

import com.lj.sys.entity.SysLogEntity;
import cn.idev.excel.annotation.ExcelProperty;
import lombok.Data;
import java.time.LocalDateTime;

/**
 * <p>
 * 系统日志 excel导出参数
 * </p>
 *
 * @author luojing
 * @since 2025-04-18 17:22:24
 */
@Data
public class SysLogExportResult {

    /**
     * 日志名称
     */
    @ExcelProperty("日志名称")
    private String logName;

    /**
     * 请求ip
     */
    @ExcelProperty("请求ip")
    private String ip;

    /**
     * 请求url
     */
    @ExcelProperty("请求url")
    private String url;

    /**
     * 请求方法
     */
    @ExcelProperty("请求方法")
    private String method;

    /**
     * 执行方法名称
     */
    @ExcelProperty("执行方法名称")
    private String methodName;

    /**
     * 是否执行成功
     */
    @ExcelProperty("是否执行成功")
    private Boolean succeed;

    /**
     * 错误信息
     */
    @ExcelProperty("错误信息")
    private String error;

    /**
     * 请求参数
     */
    @ExcelProperty("请求参数")
    private String paramsJson;

    /**
     * 执行结果
     */
    @ExcelProperty("执行结果")
    private String resultJson;

    /**
     * 执行耗时(ms)
     */
    @ExcelProperty("执行耗时(ms)")
    private Long duration;

    /**
     * 创建时间
     */
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    public static SysLogExportResult of(SysLogEntity entity) {
        if (entity == null) {
            return null;
        }
        SysLogExportResult result = new SysLogExportResult();
        result.setLogName(entity.getLogName());
        result.setIp(entity.getIp());
        result.setUrl(entity.getUrl());
        result.setMethod(entity.getMethod());
        result.setMethodName(entity.getMethodName());
        result.setSucceed(entity.getSucceed());
        result.setError(entity.getError());
        result.setParamsJson(entity.getParamsJson());
        result.setResultJson(entity.getResultJson());
        result.setDuration(entity.getDuration());
        result.setCreateTime(entity.getCreateTime());
        return result;
    }
}
